package com.funmi.lizip.entity;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDateTime;

import java.io.Serializable;

import com.funmi.lizip.utils.ArrayJsonHandler;
import com.funmi.lizip.utils.ObjectJsonHandler;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * <p>
 *
 * </p>
 *
 * @author yeyg
 * @since 2022-11-03
 */
@Data
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@TableName(value = "ec_personnel", autoResultMap = true)
public class Personnel implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 人员类型 emergency_em:应急人员 ranger_ran:护林员 man on duty_manOD:值班人员
     */
    private String type;

    /**
     * 姓名
     */
    private String name;

    /**
     * 照片
     */
    private String photo;

    /**
     * 出生年月
     */
    private LocalDateTime birthDate;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 学历
     */
    private String education;

    /**
     * 联系方式
     */
    private String contactTel;

    /**
     * 固定电话
     */
    private String telephone;

    /**
     * 应急人员组别
     */
    private Integer emergencyPersonnelGroupId;

    /**
     * 应急人员职位
     */
    private Integer emergencyJobId;

    /**
     * 常驻地址
     */
    private String address;

    /**
     * 应急人员应急职责
     */
    private String emergencyDuty;

    /**
     * 护林员巡护方式
     */
    private String rangerPatrolType;

    /**
     * 护林员巡护区域
     */
    private String rangerPatrolRegion;

    /**
     * 护林员巡护面积
     */
    private String rangerPatrolArea;

    /**
     * 护林员责任区号
     */
    private String rangerDutyAreaCode;

    /**
     * 护林员林班号
     */
    private String rangerForestPatchCode;

    /**
     * 护林员小班号
     */
    private String rangerSmallPatchCode;

    /**
     * 其他信息json
     */
    /*@TableField(value = "other_msg", typeHandler = ObjectJsonHandler.class)
    private JSONObject otherMsg;*/

    /**
     * 是否删除 1:删除
     */
    @TableField(value = "is_delete",select = false)
    @TableLogic
    private Boolean delete;

    /**
     * 值班人员性别
     */
    private String sex;

    /**
     * 值班人员身份证号
     */
    private String idCard;

    /**
     * 值班人员民族
     */
    private String nation;

    /**
     * 值班人员政治面貌
     */
    private String politicalStatus;

    /**
     * 值班人员籍贯
     */
    private String nativePlace;

    /**
     * 值班人员健康状况
     */
    private String health;

    /**
     * 值班人员参加工作时间
     */
    private LocalDateTime workTime;

    /**
     * 值班人员进入单位时间
     */
    private LocalDateTime entryUnitTime;

    /**
     * 值班人员部门
     */
    private String department;

    /**
     * 值班人员职务
     */
    private String duty;

    /**
     * 值班人员在线状态 1 在线
     */
    private String isOnline;

    /**
     * 位置 json
     */
    @TableField(value = "position", typeHandler = ArrayJsonHandler.class)
    private JSONArray position;

    /**
     * 北斗设备id
     */
    private String bdsId;

    /**
     * 对讲机id
     */
    private String interPhoneId;

    /**
     * 是否有账号 1有账号
     */
    private String isAccount;

    /**
     * 备注
     */
    private String remark;

    /**
     * 值班角色
     */
    private String personnelRole;

    /**
     * 县镇村
     */
    @TableField(value = "position_json", typeHandler = ObjectJsonHandler.class)
    private JSONObject positionJson;


    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createAt;

    /**
     * user_id 护林员账号id
     */
    private Integer userId;

    public Personnel(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Personnel(String name) {
        this.name = name;
    }

    public Personnel() {

    }
}
